package com.bsoft.exchange.domain;

import lombok.Data;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "LabReport")
@Data
public class RegularReportDomain implements Serializable {

    /**
     * 文档唯一号
     */
    @XmlElement(name = "DCId")
    private String dCId;

    /**
     * 检验标本号
     */
    @XmlElement(name = "SampleNo")
    private String sampleNo;

    /**
     * 条码号
     */
    @XmlElement(name = "BarcodeNo")
    private String barcodeNo;

    /**
     * 就诊机构代码
     */
    @XmlElement(name = "AuthorOrganization")
    private String authorOrganization;

    /**
     * 患者类型
     */
    @XmlElement(name = "PatientType")
    private String patientType;

    /**
     * 门诊号码
     */
    @XmlElement(name = "ClinicId")
    private String clinicId;

    /**
     * 住院号码
     */
    @XmlElement(name = "HospizationId")
    private String hospizationId;

    /**
     * 患者姓名
     */
    @XmlElement(name = "Name")
    private String name;

    /**
     * 性别代码
     */
    @XmlElement(name = "Sex")
    private String sex;

    /**
     * 年龄
     */
    @XmlElement(name = "Age")
    private String age;

    /**
     * 科室名称
     */
    @XmlElement(name = "DeptName")
    private String deptName;

    /**
     * 病区名称
     */
    @XmlElement(name = "WardName")
    private String wardName;

    /**
     * 临床诊断
     */
    @XmlElement(name = "DiagnoseName")
    private String diagnoseName;

    /**
     * 检验医嘱名称
     */
    @XmlElement(name = "LabOrdersItemName")
    private String labOrdersItemName;

    /**
     * 检验申请时间
     */
    @XmlElement(name = "RequestTime")
    private String requestTime;

    /**
     * 检验申请医师
     */
    @XmlElement(name = "RequestDoctor")
    private String requestDoctor;

    /**
     * 检验申请医师姓名
     */
    private String requestDoctorName;


    /**
     * 标本类别名称
     */
    @XmlElement(name = "SampleTypeName")
    private String sampleTypeName;

    /**
     * 标本采集日期时间
     */
    @XmlElement(name = "SampleExecuteTime")
    private String sampleExecuteTime;

    /**
     * 接收标本日期时间
     */
    @XmlElement(name = "SampleReceiveTime")
    private String sampleReceiveTime;

    /**
     * 报告时间
     */
    @XmlElement(name = "ReportDateTime")
    private String reportDateTime;

    /**
     * 报告人
     */
    @XmlElement(name = "ReportDoctor")
    private String reportDoctor;

    /**
     * 报告人姓名
     */
    private String reportDoctorName;

    /**
     * 报告审核时间
     */
    @XmlElement(name = "ReportReviewTime")
    private String reportReviewTime;

    /**
     * 审核人
     */
    @XmlElement(name = "ReportReviewDoctor")
    private String reportReviewDoctor;

    /**
     * 审核人姓名
     */
    private String reportReviewDoctorName;

    /**
     * 报告状态
     */
    @XmlElement(name = "ReportStatus")
    private String reportStatus;

    /**
     * 报告类型
     */
    @XmlElement(name = "ReportType")
    private String reportType;

    /**
     * 检验项
     */
    @XmlElement(name = "ItemResult")
    private ItemResult itemResult;

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = "ItemResult")
    @Data
    public static class ItemResult implements Serializable{

        /**
         * 检验小项代码
         */
        @XmlElement(name = "TestId")
        private String testId;

        /**
         * 检验小项名称
         */
        @XmlElement(name = "TestName")
        private String testName;

        /**
         * 检验定量结果
         */
        @XmlElement(name = "TestResult")
        private String testResult;

        /**
         * 检验定量结果计量单位
         */
        @XmlElement(name = "ResultUnit")
        private String resultUnit;

        /**
         * 检验定性结果
         */
        @XmlElement(name = "ResultQualition")
        private String resultQualition;

        /**
         * 检验结果提示
         */
        @XmlElement(name = "ResultMessage")
        private String resultMessage;

        /**
         * 参考值下限
         */
        @XmlElement(name = "ReferenceLow")
        private String referenceLow;

        /**
         * 参考值上限
         */
        @XmlElement(name = "ReferenceHeight")
        private String referenceHeight;

        /**
         * 参考值范围
         */
        @XmlElement(name = "ReferenceRange")
        private String referenceRange;

        /**
         * 检验结果代码
         */
        @XmlElement(name = "ResultCode")
        private String resultCode;

    }
}
